#include "HeaderDatos.h"


HeaderDatos::HeaderDatos(){
	this->cantBloques = 0;
	this->alturaArbol = 0;
	this->posBloqueRaiz = 0;
	this->posBloqueSecuencial = 0;
}


HeaderDatos::~HeaderDatos(){
	this->cantBloques = 0;
	this->alturaArbol = 0;
	this->posBloqueRaiz = 0;
	this->posBloqueSecuencial = 0;
}


unsigned int HeaderDatos::getPosBloqueLibre(){
	throw "No será implementado";
}


// El arrBytes tiene el tamaño suficiente para los datos
size_t HeaderDatos::serialize(char* &arrBytes){

	this->serInator.reset();

	// Una marca para saber donde empieza la cabecera
	char firma = 'H';
	this->serInator.serializar(arrBytes, firma);

	// Los datos de la cabecera
	this->serInator.serializar(arrBytes, this->alturaArbol);
	this->serInator.serializar(arrBytes, this->cantBloques);
	this->serInator.serializar(arrBytes, this->posBloqueRaiz);
	this->serInator.serializar(arrBytes, this->posBloqueSecuencial);

	return this->getTamBloque();
}


void HeaderDatos::deSerialize(char* arrBytes){
	this->serInator.reset();

	// La marca de la cabecera
	char firma = 'H';
	this->serInator.desSerializar(arrBytes, firma);

	// Los datos de la cabecera
	this->serInator.desSerializar(arrBytes, this->alturaArbol);
	this->serInator.desSerializar(arrBytes, this->cantBloques);
	this->serInator.desSerializar(arrBytes, this->posBloqueRaiz);
	this->serInator.desSerializar(arrBytes, this->posBloqueSecuencial);
}


